package com.bankcomm.luafuction;

import org.keplerproject.luajava.LuaException;
import org.keplerproject.luajava.LuaState;

import com.rytong.tools.ui.Component;
import com.rytong.tools.utils.Utils;

public class LuaMap {

    public LuaMap() {
        try {
            Component.LUASTATE.pushObjectValue(this);
            Component.LUASTATE.setGlobal("luamap");
            final String luahead = "map = {}; ";
            final String setCenter = "function map:setCenter(la,lo) luamap:setCenter(la,lo); end;";
            final String getUserCurrentLocation = "function map:getUserCurrentLocation() local a1 = luamap:getUserCurrentLocation(); return a1; end;";
            String addAnnotation = "function map:addAnnotation(latitude, longitude, title, subtitle) luamap:addAnnotation(latitude, longitude, title, subtitle);  end;";
            String scrollEnabled = "function map:setMapScrollEnabled(enabled) luamap:setMapScrollEnabled(enabled); end;";
            String zoomEnabled = "function map:setMapZoomEnabled(enabled) luamap:setMapZoomEnabled(enabled); end;";
            String setMapType = "function map:setMapType(mapType) luamap:setMapType(mapType); end;";
            Component.LUASTATE.gc(LuaState.LUA_GCCOLLECT, 0);
            Component.LUASTATE.LdoString(luahead.concat(setCenter).concat(getUserCurrentLocation).concat(addAnnotation)
                    .concat(scrollEnabled).concat(zoomEnabled).concat(setMapType));
        } catch (LuaException e) {
            Utils.printException(e);
        }
    }

    /**
     * 设置地图显示的中心点。（仅地图控件可调用）
     * 
     * @param latitude
     * @param longitude
     */
    public void setCenter(double latitude, double longitude) {
//        int size = Component.VWIDGETARRAY.size();
//        Object o = null;
//        LPAmap view = null;
//        for (int i = 0; i < size; i++) {
//            o = Component.VWIDGETARRAY.get(i);
//            if (o instanceof LPAmap) {
//                view = (LPAmap) o;
//                view.setCenter(latitude, longitude);
//                break;
//            }
//        }
    }
    
    /**
     * 设置地图类型
     * 
     * @param mapType
     *            road(街道平面图)/satellite(卫星鸟瞰图)/other(Traffic带路况 平面图)
     */
    public void setMapType(String mapType) {
//        int size = Component.VWIDGETARRAY.size();
//        Object o = null;
//        LPAmap view = null;
//        for (int i = 0; i < size; i++) {
//            o = Component.VWIDGETARRAY.get(i);
//            if (o instanceof LPAmap) {
//                view = (LPAmap) o;
//                view.setMapType(mapType);
//                break;
//            }
//        }
    }

    /**
     * 返回当前用户的坐标。（仅地图控件可调用）经度和纬度，坐标点标题，坐标点内容
     * 
     * @return
     */
    public String getUserCurrentLocation() {
        return "";
    }

    /**
     * 在地图控件上添加新的坐标点。（仅地图控件可调用）
     * 
     * @param latitude
     * @param longitude
     * @param title
     * @param subtitle
     *            latitude(required) Number. 纬度
     * 
     *            longitude(required) Number. 纬度
     * 
     *            title(required) String. 坐标点标题
     * 
     *            subtitle(required) String. 坐标点子标题
     */
    public void addAnnotation(double latitude, double longitude, String title, String subtitle) {
//        int size = Component.VWIDGETARRAY.size();
//        Object o = null;
//        LPAmap view = null;
//        for (int i = 0; i < size; i++) {
//            o = Component.VWIDGETARRAY.get(i);
//            if (o instanceof LPAmap) {
//                view = (LPAmap) o;
//                view.addAnnotation(latitude, longitude, title, subtitle);
//                break;
//            }
//        }
    }

    /**
     * 设置地图是否可以滚动（横竖方向一同设置）。（仅地图控件可调用）
     * 
     * @param enabled
     */
    public void setMapScrollEnabled(boolean enabled) {
//        int size = Component.VWIDGETARRAY.size();
//        Object o = null;
//        LPAmap view = null;
//        for (int i = 0; i < size; i++) {
//            o = Component.VWIDGETARRAY.get(i);
//            if (o instanceof LPAmap) {
//                view = (LPAmap) o;
//                view.setMapScrollEnabled(enabled);
//                break;
//            }
//        }
    }

    /**
     * 设置地图是否可以缩放。（仅地图控件可调用）
     * 
     * @param enabled
     */
    public void setMapZoomEnabled(boolean enabled) {
//        int size = Component.VWIDGETARRAY.size();
//        Object o = null;
//        LPAmap view = null;
//        for (int i = 0; i < size; i++) {
//            o = Component.VWIDGETARRAY.get(i);
//            if (o instanceof LPAmap) {
//                view = (LPAmap) o;
//                view.setMapZoomEnabled(enabled);
//                break;
//            }
//        }
    }
}
